export default {
  // 测试环境
  testEnvironment: 'node',
  
  // 转换配置
  transform: {},
  
  // 模块路径映射
  moduleNameMapper: {
    '^(\.\.?/.*)\.js$': '$1'
  },
  
  // 测试文件模式
  testMatch: [
    '**/tests/**/*.test.js',
    '**/tests/**/*.spec.js',
    '**/__tests__/**/*.js',
    '**/?(*.)+(spec|test).js'
  ],
  
  // 覆盖率配置
  collectCoverage: true,
  coverageDirectory: 'coverage',
  coverageReporters: ['text', 'html', 'lcov'],
  collectCoverageFrom: [
    'services/**/*.js',
    'websocket/**/*.js',
    'utils/**/*.js',
    'game/**/*.js',
    '!**/__tests__/**',
    '!**/tests/**',
    '!**/node_modules/**',
    '!coverage/**'
  ],
  
  // 覆盖率阈值
  coverageThreshold: {
    global: {
      branches: 60,
      functions: 60,
      lines: 60,
      statements: 60
    }
  },
  
  // 测试设置文件
  setupFilesAfterEnv: ['<rootDir>/tests/setup.js'],
  
  // 超时设置
  testTimeout: 30000,
  
  // 详细输出
  verbose: true,
  
  // 清理模拟
  clearMocks: true,
  
  // 模拟定时器
  fakeTimers: {
    enableGlobally: false
  },
  
  // 测试序列化运行（避免并发问题）
  maxWorkers: 1,
  
  // 强制退出
  forceExit: true
};